#ifndef ENEMY_HH
#define ENEMY_HH
/*
The Enemy base class manages enemy attributes (health, attack/defense) and stun states.
 Derived classes (BruteEnemy, ArbalestEnemy, CultistMage) define specific enemy types,
 overriding interact() to provide unique behaviors (e.g., brute charging, arbalest aiming, mage chanting dark spells).
*/
/*
* Enemy基类管理敌人基础属性（生命值、攻防值）及眩晕状态，
* 其派生类实现具体敌人类型：
* - BruteEnemy（蛮兵）：重写interact()实现冲锋攻击
* - ArbalestEnemy（弩手）：重写interact()实现精准瞄准
* - CultistMage（邪教徒法师）：重写interact()实现黑暗咒语吟唱
*/
#include "Character.hh"
#include <iostream>

namespace DungeonRPG{

class Enemy : public Character {
public:
    Enemy(const std::string& name, unsigned health, unsigned attack, unsigned defense);
    virtual void interact();

    void stun();
    bool isStunned() const;
    void recoverStun();

    bool canBeStunned() const override { return true; }
};

class BruteEnemy : public Enemy {
public:
    BruteEnemy();
    void interact() override;
};

class ArbalestEnemy : public Enemy {
public:
    ArbalestEnemy();
    void interact() override;
};

class CultistMage : public Enemy {
public:
    CultistMage();
    void interact() override;
};

}

#endif
